package Persistencia;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Vector;

import Clases.Comida;
import Clases.Ingrediente;
import Clases.RecetaCombo;
import Clases.RecetaSimple;


public class DAOIngrediente
{
	private static DAOIngrediente pool;
	
	private DAOIngrediente(){
	}	
	
	public static DAOIngrediente getInstancia()
	{
		if (pool == null)
			pool = new DAOIngrediente();
		return pool;
	}
	
	public boolean existeIngredienteRelaionado(int codBarra)
	{
		Connection con = PoolConnection.getPoolConnection().getConnection();	
		//Generar sentencia SQL
		try
		{
			//Preparar sentencia insert en tabla destino
			String senten = "SELECT * from [TPOAPI].[dbo].[Ingrediente] where codBarra = ?" ;
			PreparedStatement ps = null;
			ps = con.prepareStatement(senten);
			ps.setInt(1, codBarra);
			ResultSet result = ps.executeQuery();
			if(result.next())
			{	
				PoolConnection.getPoolConnection().realeaseConnection(con);
				return true;
			}
			PoolConnection.getPoolConnection().realeaseConnection(con);
			return false;
		}
	      catch( SQLException e ) 
	      {
				System.out.println("Mensaje Error al Buscar Ingrediente: " + e.getMessage());
				System.out.println("Stack Trace al Buscar Ingrediente: " + e.getStackTrace());
				PoolConnection.getPoolConnection().realeaseConnection(con);
	      }
	      return false;
	}
	
	public Vector<Ingrediente> buscarIngRec(int idReceta)
	{

		Connection con = PoolConnection.getPoolConnection().getConnection();	
		Vector<Ingrediente> vec = new Vector<Ingrediente>();
		
		//Generar sentencia SQL
		try
		{
			//Preparar sentencia insert en tabla destino
			String senten = 
					"SELECT I.* from [TPOAPI].[dbo].[Ingrediente] I " +
					"inner join [TPOAPI].[dbo].[RecetaIngrediente] RI ON RI.idIngrediente = I.idIngrediente " +
					"where RI.idReceta = ?" ;
			PreparedStatement ps = null;
			ps = con.prepareStatement(senten);
			ps.setInt(1, idReceta);
			ResultSet result = ps.executeQuery();
			while(result.next())
			{	
				Ingrediente i = new Ingrediente();
				i.setIdIngrediente(result.getInt("idIngrediente"));
				i.setCantidad(result.getFloat("Cantidad"));
				i.setProductos(DAOProducto.getInstancia().buscarProducto(result.getInt("codBarra")));
				i.setUnidad(result.getString("Unidad"));
				i.setPrecio();
				vec.add(i);
			}
			PoolConnection.getPoolConnection().realeaseConnection(con);
			return vec;
		}
	      catch( SQLException e ) 
	      {
				System.out.println("Mensaje Error al Buscar Ingrediente: " + e.getMessage());
				System.out.println("Stack Trace al Buscar Ingrediente: " + e.getStackTrace());
				PoolConnection.getPoolConnection().realeaseConnection(con);
	      }
	      return vec;
	}
	
}
